package com.example.child_protection.enums;

import java.util.HashMap;
import java.util.Map;

/**
 * 类目属性枚举
 *
 * @author Biz
 * @date 2018-11-3
 */
public enum CategoryAttrEnums {
    /**
     * 儿童信息
     */
    PARENT_CARD_ID(1000010001L, "CHILD_BASE_INFO", "母子保健手册卡号"),

    NAME(1000010002L, "CHILD_PARENT_INFO", "姓名"),

    SEX(1000010003L, "PHYSICAL_EXAMINATION", "性别"),

    NATION(1000010004L, "CHILD_FOOD_CHECK", "民族"),

    BIRTHDAY(1000010005L, "CHILD_SIGN", "出生日期"),

    WEIGHT(1000010006L, "CHILD_FOOD_CHECK", "儿童体重"),

    HEIGHT(1000010007L, "CHILD_FOOD_CHECK", "儿童身长"),

    BIRTH_DEFECT(1000010008L, "CHILD_FOOD_CHECK", "出生缺陷"),

    BIRTH_INFO(1000010009L, "CHILD_FOOD_CHECK", "出生情况"),

    BIRTH_TYPE(1000010010L, "CHILD_FOOD_CHECK", "出生类型"),

    BIRTH_HIS(1000010011L, "CHILD_FOOD_CHECK", "出生医院"),

    MODE_OF_DELIVERY(1000010012L, "CHILD_FOOD_CHECK", "分娩方式"),

    NUMBERS_OF_BIRTH(1000010013L, "CHILD_FOOD_CHECK", "分娩胎数"),

    PREGNANCY(1000010014L, "CHILD_FOOD_CHECK", "孕期"),

    GESTATIONAL_NUMS(1000010015L, "CHILD_FOOD_CHECK", "孕次"),

    PRODUCTION_NUMS(1000010016L, "CHILD_FOOD_CHECK", "产次"),

    APGAR_SCORE(1000010017L, "CHILD_FOOD_CHECK", "APGAR评分"),

    VISIT(1000010018L, "CHILD_FOOD_CHECK", "访视"),

    GESTATIONAL_WEEK(1000010019L, "CHILD_FOOD_CHECK", "分娩孕周（周）"),

    GESTATIONAL_DAYS(1000010020L, "CHILD_FOOD_CHECK", "分娩孕周（天）"),

    FEED(1000010021L, "CHILD_FOOD_CHECK", "6月内喂养方式"),

    SOLID_FOOD_AGE(1000010022L, "CHILD_FOOD_CHECK", "初次添加辅食月龄"),

    FAMILY_MEDICAL_HISTORY(1000010023L, "CHILD_FOOD_CHECK", "家族史"),

    MEDICAL_HISTORY(1000010024L, "CHILD_FOOD_CHECK", "既往病史"),

    /**
     * 儿童父母信息
     */
    FATHE_NAME(1000020001L, "FATHE_NAME", "父亲名称"),

    FATHE_AGE(1000020002L, "FATHE_AGE", "父亲年龄"),

    FATHE_WEGIHT(1000020003L, "FATHE_WEGIHT", "父亲体重"),

    FATHE_HEIGHT(1000020004L, "FATHE_HEIGHT", "父亲身高"),

    FATHE_CULTURE(1000020005L, "FATHE_CULTURE", "父亲文化程度"),

    FATHE_BMI(1000020006L, "FATHE_BMI", "父亲BMI"),

    MONTHER_NAME(1000020007L, "MONTHER_NAME", "母亲姓名"),

    MONTHER_AGE(1000020008L, "MONTHER_AGE", "母亲年龄"),

    MONTHER_WEIGHT(1000020009L, "MONTHER_WEIGHT", "母亲体重"),

    MONTHER_HEIGHT(1000020010L, "MONTHER_HEIGHT", "母亲身高"),

    MONTHER_CULTURE(1000020011L, "MONTHER_CULTURE", "母亲文化程度"),

    MONTHER_BMI(1000020012L, "MONTHER_BMI", "母亲BMI"),

    MONTHER_MENARCHE_AGE(1000020013L, "MONTHER_MENARCHE_AGE", "月经初潮"),

    AGE(1000020014L, "AGE", "年龄"),

    /**
     * 儿童体格检查
     */

    PHYSICAL_EXAMINATION_DATE(1000030001L, "PHYSICAL_EXAMINATION_DATE", "体检日期"),

    FEEDING_MODE(1000030002L, "FEEDING_MODE", "喂养方式"),

    MENTAILY(1000030003L, "MENTAILY", "精神状态"),

    PHYSICAL_EXAMINATION_WEIGHT(1000030004L, "PHYSICAL_EXAMINATION_WEIGHT", "体检体重"),

    PHYSICAL_EXAMINATION_HEIGHT(1000030005L, "PHYSICAL_EXAMINATION_HEIGHT", "体检身高"),

    PROPORTION_OF_BODY(1000030006L, "PROPORTION_OF_BODY", "匀称度"),

    HEAD_CIRCUMFERENCE(1000030007L, "HEAD_CIRCUMFERENCE", "头围"),

    BUST(1000030008L, "BUST", "胸围"),

    PEDESTAL_HEIGHT(1000030009L, "PEDESTAL_HEIGHT", "座高"),

    UPPER_ARM_CIRCUMFERENCE(1000030010L, "UPPER_ARM_CIRCUMFERENCE", "上臂围"),

    TOOTH_NUMBERS(1000030011L, "TOOTH_NUMBERS", "牙数"),

    CARIES(1000030012L, "CARIES", "龋齿"),

    SKIN(1000030013L, "SKIN", "皮肤"),

    SUBCUTANEOUS_FAT(1000030014L, "SUBCUTANEOUS_FAT", "皮下脂肪"),

    HAIR(1000030015L, "HAIR", "毛发"),

    LYMPH_GLAND(1000030016L, "LYMPH_GLAND", "淋巴结"),

    HEAD_TYPE(1000030017L, "HEAD_TYPE", "头型"),

    ANTERIOR_FONTANELLE(1000030018L, "ANTERIOR_FONTANELLE", "前囱"),

    EYE(1000030019L, "EYE", "眼"),

    EAR(1000030020L, "EAR", "耳"),

    NOSE(1000030021L, "NOSE", "鼻"),

    MOUTH(1000030022L, "MOUTH", "口腔"),

    PHARYNX(1000030023L, "PHARYNX", "咽"),

    THORAX(1000030024L, "THORAX", "胸廓"),

    HEART(1000030025L, "HEART", "心"),

    LUNG(1000030026L, "LUNG", "肺"),

    LIVER(1000030027L, "LIVER", "肝"),

    SPLEEN(1000030028L, "SPLEEN", "脾"),

    ABDOMEN(1000030029L, "ABDOMEN", "腹部"),

    LIMB(1000030030L, "LIMB", "四肢"),

    SPINE(1000030031L, "SPINE", "脊柱"),

    X_O_LEG(1000030032L, "X_O_LEG", "X/O型腿"),

    HIP_ABDUCTION(1000030033L, "HIP_ABDUCTION", "双髋外展"),

    EXTERNAL_GENITALS(1000030034L, "EXTERNAL_GENITALS", "外生殖器"),

    NERVOUS_SYSTEM(1000030035L, "NERVOUS_SYSTEM", "神经系统"),

    HERNIA(1000030036L, "HERNIA", "疝气"),

    HEARING_SCREENING(1000030037L, "HEARING_SCREENING", "听力筛查"),

    METHOD(1000030038L, "METHOD", "方法"),

    HEMOGLOBIN(1000030039L, "HEMOGLOBIN", "血色素g/L"),

    BLOOD_LEAD(1000030040L, "BLOOD_LEAD", "血铅"),

    RESULT(1000030041L, "RESULT", "结果"),

    BALP(1000030042L, "BALP", "BALP"),

    BONE_DENSITY(1000030043L, "BONE_DENSITY", "骨密度"),

    /**
     * 儿童饮食调查
     */

    FORMULA_MILK(1000040001L, "FORMULA_MILK", "配方奶"),

    NUMBERS(1000040002L, "NUMBERS", "次数"),

    BREAST_MILK(1000040003L, "BREAST_MILK", "母乳"),

    FISH_AND_SHRIMP(1000040004L, "FISH_AND_SHRIMP", "鱼虾"),

    MEAT(1000040005L, "MEAT", "肉（猪/牛/鸡/鸭等）"),

    LIVER_FOODS(1000040006L, "LIVER_FOODS", "肝（猪/牛/鸡/鸭等）"),

    BLOOD(1000040007L, "BLOOD", "血（猪/牛/鸡/鸭等）"),

    EGG(1000040008L, "EGG", "蛋"),

    BEANS(1000040009L, "BEANS", "豆类"),

    FOODSTUFF(1000040010L, "FOODSTUFF", "粮食（米粉/稀饭/干饭/面条/馒头等）"),

    /**
     * 儿童体征
     */

    SKIN_CONDITION(1000050001L, "SKIN_CONDITION", "皮肤情况"),

    LUNG_RALES(1000050002L, "LUNG_RALES", "肺部湿啰音"),

    RASH_POSITION(1000050003L, "RASH_POSITION", "皮疹位置"),

    PULMONARY_WHEEZING(1000050004L, "PULMONARY_WHEEZING", "肺部喘鸣音"),

    RASH_FORM(1000050005L, "RASH_FORM", "皮疹形态"),

    NASAL_MUCOSA(1000050006L, "NASAL_MUCOSA", "鼻粘膜"),

    /**
     * 儿童SPT测试
     */

    YOLK(1000060001L, "YOLK", "蛋黄"),

    PROTEIN(1000060002L, "PROTEIN", "蛋白"),

    MILK(1000060003L, "MILK", "牛奶"),

    SOYBEAN(1000060004L, "SOYBEAN", "大豆"),

    PEANUT(1000060005L, "PEANUT", "花生"),

    FISH(1000060006L, "FISH", "鱼"),

    SHRIMP(1000060007L, "SHRIMP", "虾"),

    WHEAT(1000060008L, "WHEAT", "小麦"),

    ORANGE(1000060009L, "ORANGE", "橘子"),

    CARROT(1000060010L, "CARROT", "胡萝卜"),

    DUST_MITES(1000060001L, "DUST_MITES", "尘螨"),

    POSITIVE_CONTROL(1000060002L, "POSITIVE_CONTROL", "阳性对照"),
    
    ;
    private final Long code;

    private final String value;

    private final String displayName;

    private static Map<String, CategoryAttrEnums> valueMap;

    private CategoryAttrEnums(Long code, String value, String displayName) {
        this.value = value;
        this.displayName = displayName;
        this.code = code;
    }

    public CategoryAttrEnums getEnum(String value) {
        return (CategoryAttrEnums) valueMap.get(value);
    }

    public Map<String, CategoryAttrEnums> getAllValueMap() {
        return valueMap;
    }

    public String getValue() {
        return this.value;
    }

    public Long getCode() {
        return this.code;
    }

    public String getDisplayName() {
        return this.displayName;
    }

    static {

        valueMap = new HashMap<String, CategoryAttrEnums>();

        for (CategoryAttrEnums e : values())
            valueMap.put(e.value, e);
    }
}
